﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TheBullysStore.Models.ModuloServicios.CuotaExtraordinaria;
using TheBullysStore.Models.ModuloAdministracion.Edificio;
using TheBullysStore.Models.ModuloServicios.MantenimientoCorrectivo;
using TheBullysStore.Models.ModuloAdministracion.Departamento;
using log4net;
using TheBullysStore.Models;

namespace TheBullysStore.Controllers.ModuloServicio
{
    public class CuotaExtraordinariaController : Controller
    {
        //
        // GET: /CuotaExtraordinaria/
        private static ILog log = LogManager.GetLogger(typeof(CuotaExtraordinariaController));
        private TheBullysStoreDB db = new TheBullysStoreDB();
        CuotaExtraordinariaFacade cuotaFacade = new CuotaExtraordinariaFacade();
        EdificioFacade edificioFacade = new EdificioFacade();
        MantenimientoCorrectivoFacade correctivoFacade = new MantenimientoCorrectivoFacade();
        DepartamentoFacade departamentoFacade = new DepartamentoFacade();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult CuotaExtraordinaria()
        {
            return View();
        }

        public ActionResult RegistrarCuotaExtraordinaria()
        {
            return View();
        }

        public ActionResult BuscarCuotaExtraordinaria()
        {
            return View();
        }

        [HttpPost]
        public JsonResult buscarCuotas(CuotaExtraordinariaBean cuota)
        {
            try
            {

                List<CuotaExtraordinariaBean> listaCuotaExtraordinaria = cuotaFacade.ListarCuota(cuota);

                return Json(new { listaCuotaExtraordinaria });
            }
            catch (Exception ex)
            {
                log.Error("Buscar Cuota Extraordinaria - GET(EXCEPTION):", ex);
                return Json(new { listaCuotaExtraordinaria = "Ocurrió un error al buscar" });
            }
        }

        [HttpPost]
        public JsonResult registrarCuota(CuotaExtraordinariaBean cuota)
        {

            try
            {
                string conexion = cuotaFacade.RegistrarCuota(cuota);
                if (conexion == "Bien")
                {
                    log.Warn("La cuota extraordinaria: \"" + cuota.Id + "\"se ha creado");
                    return Json(new { me = "Se ingreso correctamente" });

                }
                else
                {
                    log.Error("Registrar Cuota Extraordinaria - Hubo un error");
                    return Json(new { me = conexion });

                }
            }
            catch (Exception ex)
            {
                log.Error("Registrar Cuota Extraordinaria - GET(EXCEPTION):", ex);
                return Json(new { me = "Existe un error" });
            }
        }

        [HttpPost]
        public JsonResult cargarEdificios(EdificioBean edificio)
        {
            try
            {
                List<EdificioBean> listaEdificio = edificioFacade.Listaredificio(edificio);
                return Json(new { listaEdificio });
            }
            catch (Exception ex)
            {
                log.Error("Cargar Edificios - GET(EXCEPTION):", ex);
                return Json(new { listaEdificio = "Ocurrió un error al cargar los edificios" });
            }
        }

        [HttpPost]
        public JsonResult cargarDepartamentos(DepartamentoBean departamento)
        {
            try
            {
                List<DepartamentoBean> listaDepartamento = departamentoFacade.Listardepartamento(departamento);
                return Json(new { listaDepartamento });
            }
            catch (Exception ex)
            {
                log.Error("Cargar Departamentos - GET(EXCEPTION):", ex);
                return Json(new { listaEdificio = "Ocurrió un error al cargar los departamentos" });
            }
        }

        [HttpPost]
        public JsonResult modificarCuota(CuotaExtraordinariaBean cuota)
        {
            try
            {
                string conexion = cuotaFacade.modificarCuota(cuota);
                if (conexion == "Bien")
                {
                    return Json(new { me = "Se ingreso correctamente" });

                }
                else
                {
                    log.Error("Modificar Cuota - Hubo un error");
                    return Json(new { me = conexion });
                }
            }
            catch (Exception ex)
            {
                log.Error("Modificar Cuota - GET(EXCEPTION):", ex);
                return Json(new { me = "Existe un error" });
            }
        }
        [HttpPost]
        public JsonResult buscarMantenimientos(MantenimientoCorrectivoBean mantCorrectivo)
        {
            try
            {
                List<MantenimientoCorrectivoBean> listaMantenimientos = cuotaFacade.ListarMantenimientoCorrectivo(mantCorrectivo);

                return Json(new { listaMantenimientos });
            }
            catch (Exception ex)
            {
                log.Error("Buscar MAntenimiento - GET(EXCEPTION):", ex);
                return Json(new { listaMantenimientos = "Ocurrió un error al buscar" });
            }
        }

        [HttpPost]
        public JsonResult eliminarCuota(CuotaExtraordinariaBean cuota)
        {
            try
            {
                string conexion = cuotaFacade.EliminarCuota(cuota);
                if (conexion == "Bien")
                {
                    return Json(new { me = "Se elimino correctamente" });

                }
                else
                {
                    log.Error("Eliminar Cuota - Hubo un error");
                    return Json(new { me = conexion });
                }
            }
            catch (Exception ex)
            {
                log.Error("Eliminar Cuota Extraordinaria - GET(EXCEPTION):", ex);
                return Json(new { me = "Existe un error" });
            }
        }


    }
}
